'use strict';
const db = uniCloud.database();
const dbCmd = db.command;

/**
 * 修复已完成订单的佣金状态
 * 将所有已完成但 commission_status 为 null 的订单设置为 'pending'
 * 这样定时任务 daily-settlement-task 就能找到这些订单并激活佣金
 */
exports.main = async (event, context) => {
    console.log('开始修复已完成订单的佣金状态...');
    const now = Date.now();
    
    try {
        // 查找所有已完成但 commission_status 为 null 的订单
        const ordersToFix = await db.collection('orders').where({
            status: 'completed',
            commission_status: null,
            promoter_id: dbCmd.exists(true),
            commission_amount: dbCmd.gt(0)
        }).get();
        
        if (ordersToFix.data.length === 0) {
            console.log('没有需要修复的订单。任务结束。');
            return { fixedCount: 0, message: '没有需要修复的订单' };
        }
        
        console.log(`发现 ${ordersToFix.data.length} 条需要修复的订单。`);
        let fixedCount = 0;
        let errorCount = 0;
        
        for (const order of ordersToFix.data) {
            try {
                // 检查激活日期是否已到
                const isActivationDue = order.activation_date && order.activation_date <= now;
                
                await db.collection('orders').doc(order._id).update({
                    commission_status: 'pending'
                });
                
                fixedCount++;
                console.log(`✅ 订单 ${order._id} 的佣金状态已修复为 'pending'（金额: ${order.commission_amount}分，激活日期已到: ${isActivationDue}）`);
            } catch (err) {
                errorCount++;
                console.error(`❌ 修复订单 ${order._id} 失败:`, err.message);
            }
        }
        
        console.log(`修复完成。成功: ${fixedCount}，失败: ${errorCount}`);
        return { 
            fixedCount, 
            errorCount,
            message: `成功修复 ${fixedCount} 条订单的佣金状态`
        };
    } catch (err) {
        console.error('修复任务失败:', err.message);
        return { 
            code: 500, 
            message: `修复失败: ${err.message}` 
        };
    }
};

